用shell脚本批量启动docker容器 您所在的位置:网站首页 启动docker 容器 用shell脚本批量启动docker容器

用shell脚本批量启动docker容器

2023-09-04 08:49| 来源: 网络整理| 查看: 265

用shell脚本批量启动docker容器 1 前置知识2 容器的自动启动脚本1 注意事项2 启动脚本1 某些含义 3 关闭脚本1 某些含义 4 设置脚本的定时启动1 安装`crontab`(一搬都自带)2 `crontab`的命令3 `crontab`的命令格式4 `crontab`的命令示例5 `docker容器`定时启动配置1 添加定时任务的两种方式(`任意位置使用`)。2 设置时间格式为24小时制1 输入命令`tzselect`2 输入命令`rm /etc/localtime`,然后回车3 输入命令`ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime`4 输入命令`date`,查看时间格式 3 添加定时任务1 第一步2 crontabs3 赋予脚本最大权限4 设置脚本自动启动(任何目录下执行)5 查看是否添加成功

1 前置知识

1.在脚本中运行docker命令要在命令前加sudo. 2.docker查看容器是否正在运行,正在运行返回1,没有返回0。 3.if和中括号[ ]之间,中括号和里面的内容也要空格隔开。 4.声明变量时等号两边不能有空格示例:a=1。 5.函数返回值用echo返回可以直接用变量=$(函数名)接收,如果用return 返回则存放在$?中用变量=$?接收

docker ps |grep -i 容器名或容器id -c 抓取某个进程的PID其中容器名su-nacos可以换成容器id,用于查看容器是否正在运行。 docker stats --format "{{.PIDs}} " --no-stream su-nacos

3.用于查看上一个进程或函数的返回值$?

2 容器的自动启动脚本 1 注意事项

1.建议配置前把容器全部重命名为软件名,修改示例如下:

docker rename smysql mysql

2.新建一个.txt文本文件,把下面的脚本复制到一个文件中。 3.在xshell中使用which bash 命令查看bash命令所在的文件夹,和脚本中的第一行/user/bin/bash进行比较,相同就不变,不相同的话修改为查询到的路径。 4.修改脚本中第二行containerNames="nacos ssdb rabbit mysql minio "数组中博主使用的容器名,改为你自己想要启动的容器名。 5.把文件后缀名改为.sh,然后放入linux任意目录下,方便就行。 6.设置脚本文件的权限,示例:chmod +x docker.sh 7.在你存放脚本的目录下启动脚本,以后每天只需要做这一步就行了。

sh docker.sh 2 启动脚本

因为用$()接收startContainer函数的返回值返回值会报容器名: command not found的错误(值时运行docker命令才会报错,但是不影响运行,其它正常),所以此处用startContainer $containerName &> /dev/null,把startContainer函数的返回值后台输出到/dev/null文件夹内(为了控制台美观不输出太多字)。

1 某些含义

0 代表docker中有该容器,且未启动。 1 代表docker中有该容器,但是已经启动了。 2 代表docker中没有该容器。

#! /user/bin/bash containerNames="ssdb rabbit " function GetContainerStatus(){ containerExist=$(sudo docker ps -a |grep -i $1 -c) if [ $containerExist != 0 ] ; then pid=$(sudo docker stats --format "{{.PIDs}}" --no-stream $1) if [ $pid -eq 0 ]; then return 0 else return 1 fi else return 2 fi } function startContainer(){ sudo docker restart $1 } for containerName in $containerNames do for((i=1; i /dev/null $(GetContainerStatus $containerName) varifyStatus=$? if [ $varifyStatus -eq 1 ]; then echo -e "\033[32m container $containerName started success \033[0m" break else echo -e "\033[33m container $containerName retry start...... \033[0m" $(startContainer $containerName) fi fi done done 3 关闭脚本

和启动脚本类似,按照第二节的来就行

1 某些含义 #! /user/bin/bash containerNames="ssdb rabbit " function GetContainerStatus(){ containerExist=$(sudo docker ps -a |grep -i $1 -c) if [ $containerExist != 0 ] ; then pid=$(sudo docker stats --format "{{.PIDs}}" --no-stream $1) if [ $pid -eq 0 ]; then return 0 else return 1 fi else return 2 fi } function stopContainer(){ sudo docker stop $1 } for containerName in $containerNames do for((i=1; i /dev/null $(GetContainerStatus $containerName) varifyStatus=$? if [ $varifyStatus -eq 0 ]; then echo -e "\033[32m container $containerName stoped success \033[0m" break else echo -e "\033[33m container $containerName retry stop...... \033[0m" $(stopContainer $containerName) fi fi done done 4 设置脚本的定时启动 1 安装crontab(一搬都自带) yum install vixie-cron yum install crontabs 2 crontab的命令 systemctl start crond.service //启动服务 systemctl stop crond.service //关闭服务 systemctl restart crond.service //重启服务 systemctl reload crond.service //重新载入配置 systemctl status crond.service //查看状态 //或者 crond start crond stop crond restart crond reload crond status

启动时出现如下情况就用这个命令rm -rf /var/run/crond.pid 在这里插入图片描述

3 crontab的命令格式 {minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script} minute: 区间为 0 – 59 hour: 区间为0 – 23 day-of-month: 区间为0 – 31 month: 区间为1 – 12. 1 是1月. 12是12月. Day-of-week: 区间为0 – 7. 周日可以是0或7. 4 crontab的命令示例

1、在 凌晨02:00运行

0 2 * * * /home/linrui/XXXX.sh

2、每个工作日22:00都进行备份作业。

0 10 * * 1,2,3,4,5 /home/linrui/XXXX.sh

0 10 * * 1-5 /home/linrui/XXXX.sh

3、每10分钟运行一次命令

*/10 * * * * /home/linrui/XXXX.sh

4、每个月的1号 15:30 运行

30 15 1 * * /home/linrui/XXXX.sh 5 docker容器定时启动配置 1 添加定时任务的两种方式(任意位置使用)。

1.针对某个用户添加定时任务

crontab -e

2.针对系统添加任务

vim /etc/crontab 2 设置时间格式为24小时制 1 输入命令tzselect

根据提示选择: 5 --> 9–>1–>1–>ok

2 输入命令rm /etc/localtime,然后回车 3 输入命令ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 4 输入命令date,查看时间格式 3 添加定时任务 1 第一步 crontab -e 2 crontabs

1.激活crontabs

systemctl start crond.service

2.查看crontabs状态

service crond status 3 赋予脚本最大权限 chmod -R 777 start.sh 4 设置脚本自动启动(任何目录下执行)

设置每天早上9.10分启动start.sh脚本 其中/usr/bin/bash时bash命令的存放路径,是用来执行脚本的环境变量,which bash可找出没有这个的话会报错,导致脚本不能被执行。

10 9 * * * /usr/bin/bash /mysoft/start.sh >/mysoft/log.txt

格式如下 在这里插入图片描述

5 查看是否添加成功 crontab -l


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有